package xiancheng_tongxin;

public class Stack {
    private Product product;
    private boolean flag;

    // 创建生产方法
    public synchronized void push(Product product){
        // 如果桌子上有产品，则不能生产
        if (flag){
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        // 没有产品，则生产
        // 模拟耗时
        try {
            Thread.sleep(1000);
        }
        catch (InterruptedException e) {
            e.printStackTrace();
        }
        this.product = product;
        flag = true;
        // 设置产品
        System.out.println(Thread.currentThread().getName() + "正在生产" + product.getColor()+ "的" + product.getName());
        this.notifyAll();
    }
    // 创建消费方法
    public synchronized void pop(){
        if (!flag){
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        // 模拟耗时
        try {
            Thread.sleep(1000);
        }
        catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 消费
        flag = false;
        System.out.println(Thread.currentThread().getName() + "正在消费" + product.getColor()+ "的" + product.getName());
        this.notifyAll();
        this.product =  null;
    }
}
